const selfFlat = function(deep = 1){
  let arr = Array.prototype.slice.call(this)
  // 浅拷贝
  if(deep === 0) return arr
  return arr.reduce((prev,next)=>{
    // [1,2,[3,4]]
    if(Array.isArray(next)){
      // 每次遍历的时候 deep 拍平一次 就会-1
      return [...prev,...selfFlat.call(next,deep-1)]
    }else{
      return [...prev,next]
    }
  },[])

}

Array.prototype.selfFlat = selfFlat;

const newArr = [1,2,3,[12,3,4],[1,2,[6,5,[7,8]]],10].selfFlat()

console.log(newArr)
